package klaus;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
 * 集合类学习
 * @author liup
 *
 */
public class 集合类 {

	public static void main(String[] args) {
//		遍历集合();
//		ArrayListDemo();
		Map集合();
	}
	
	/*---------------------------------分割线--------------------------------------*/
	/**
	 * 遍历集合
	 */
	static void 遍历集合(){
		Collection<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("c");
		Iterator<String> iterator = list.iterator();//迭代器
		while (iterator.hasNext()) {//hasNext返回的是对象
			String string = (String) iterator.next();
			System.out.println(string);
		}
	}
	
	/*---------------------------------分割线--------------------------------------*/
	/*
	 * List集合：元素可重复！
	 * List接口：继承Collection,定义了get，set方法
	 * List接口实现类：
	 * 1.ArrayList：
	 * 	实现了可变数组；
	 * 	允许保存所有元素，包括null；
	 * 	指定索引位置插入删除对象的速度较慢
	 * 	可快速随机访问集合中的对象
	 * 2.LinkedList
	 * 	链表结构保存对象
	 * 	指定索引位置插入删除对象的速度较块
	 * 	随机访问集合中的对象较慢
	 * */
	
	static void ArrayListDemo(){
		ArrayList<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("a");
		System.out.println("list为"+list.toString());
		int i = (int)(Math.random()*(list.size()-1));
		System.out.println("list中第"+i+"个元素的值为"+list.get(i));
		list.remove(i);
		System.out.println("删除随机之后的list为"+list.toString());
	}
	
	/*---------------------------------分割线--------------------------------------*/
	
	/*
	 * Map集合
	 * key-value key决定了存储对象在映射中的存储位置，散列技术-散列码的整数值-偏移量-映射你村区域的起始位置
	 * key不允许重复
	 * */
	
	static void Map集合(){
		Map<String, String> hashMap = new HashMap<>();
		hashMap.put("1", "张三");
		hashMap.put("2", "李四");
		hashMap.put("1", "王五");
		
		//获取所有key
		System.out.println("key集合中的元素:");
		Set<String> keySet = hashMap.keySet();
		Iterator<String> iterator = keySet.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			System.out.println(key);
		}
		
		//获取所有value
		System.out.println("value集合中的元素:");
		Collection<String> values = hashMap.values();
		Iterator<String> iterator2 = values.iterator();
		while (iterator2.hasNext()) {
			String value = (String) iterator2.next();
			System.out.println(value);
		}
	}
}
